/**
  ******************************************************************************
  * @文件名称 : disp_titlebar.c
  * @摘要 : 
  * @创建日期 : Aug 1, 2024
  * @创建者：Mbl
  ******************************************************************************
  * @使用说明
  *
  *  
  ******************************************************************************
  */

/* 声明包含头文件 -----------------------------------------------------------*/
#include "../Inc/disp_titlebar.h"
#include "../Inc/data_public.h"
/* 声明私有类型定义---------------------------------------------------------*/

/* 声明私有变量 -------------------------------------------------------------*/
static lv_obj_t* parentObj_titlebar;  //标题栏父对象
static lv_obj_t* returnBtn_titlebar;  //标题栏返回按钮
static lv_obj_t* returnLabel_titlebar;  //标题栏返回按钮标签
static lv_obj_t* nameLabel_titlebar;  //标题栏页面名称标签
static lv_obj_t* mainLabel_titlebar;  //标题栏页面主温度显示标签
static lv_obj_t* unitLabel_titlebar;  //标题栏页面主温度单位标签
//static lv_obj_t* messBtn_titlebar;  //标题栏消息按钮
//static lv_obj_t* messLabel_titlebar;  //标题栏消息标签
//static lv_obj_t* messSumLabel_titlebar;  //标题栏消息数量标签
/* 声明私有常量 -------------------------------------------------------------*/

/* 声明私有宏定义 -----------------------------------------------------------*/

/* 声明私有函数 -------------------------------------------------------------*/

/**
  * @brief  共用标题栏删除
  * @param  无
  * @retval 无
  */
void UI_delete_titlebar(void)
{
	lv_obj_del(parentObj_titlebar);  //删除标题栏
	lv_timer_del(UI_display_titlebar_timer);  //删除定时器
}


/**
  * @brief  共用标题栏回调
  * @param  无
  * @retval 无
  */
void UI_titlebar_btn_event_cb(lv_event_t* e)
{
    lv_obj_t* target = lv_event_get_target(e); /* 获取触发源 */

    if (target == returnBtn_titlebar)  //标题栏返回标签
    {
        switch (disp.Ret)
        {
        case DIF_NULL:  //无显示界面
            break;
        case DIF_INIT:  //初始化界面
            break;
        case DIF_MAIN:  //主界面
        	disp.New = DIF_MAIN;  //进入主界面
            break;
        case DIF_MENU:  //菜单界面
        	disp.New = DIF_MENU;  //进入菜单界面
            break;
        case DIF_CURVE:  //曲线界面
        	disp.New = DIF_CURVE;  //进入曲线界面
            break;
        case DIF_MESS:  //报警消息界面
        	disp.New = DIF_MESS;  //进入报警消息界面
            break;
		case DIF_FUNC:  //功能设置界面
        	disp.New = DIF_FUNC;  //进入功能设置界面
			break;
		case DIF_DISP:  //显示设置界面
        	disp.New = DIF_DISP;  //进入显示设置界面
			break;
		case DIF_ALARM:  //报警界面
        	disp.New = DIF_ALARM;  //进入报警界面
			break;
		case DIF_COMM:  //通讯设置界面
        	disp.New = DIF_COMM;  //进入通讯设置界面
			break;
		case DIF_PRO:  //高级设置界面
        	disp.New = DIF_PRO;  //进入高级设置界面
			break;
		case DIF_ABOUT:  //关于本机界面
        	disp.New = DIF_ABOUT;  //进入关于本机界面
			break;
		case DIF_FAC:  //工厂参数界面
        	disp.New = DIF_FAC;  //工厂参数界面
			break;
		case DIF_STAN:  //待机界面
			break;
        }
    }
//    else if (target == messBtn_titlebar)  //标题栏消息标签
//    {
//    	disp.New = DIF_MESS;  //进入报警消息界面
//    }
}

/**
  * @brief  共用标题栏标题切换
  * @param  无
  * @retval 无
  */
void UI_switch_titlebar_title(void)
{
    switch (disp.New)
    {
    case DIF_NULL:

        break;
    case DIF_INIT:

        break;
    case DIF_MAIN:

        break;
    case DIF_MENU:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].menu);  //文本内容
        break;
    case DIF_CURVE:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].curve);  //文本内容
        break;
    case DIF_MESS:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].mess);  //文本内容
        break;
    case DIF_FUNC:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].function);  //文本内容
        break;
    case DIF_DISP:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].display);  //文本内容
        break;
    case DIF_ALARM:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].alarmSet);  //文本内容
        break;
    case DIF_COMM:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].systemSet);  //文本内容
        break;
    case DIF_PRO:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].advanced);  //文本内容
        break;
    case DIF_ABOUT:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].about);  //文本内容
        break;
    case DIF_FAC:
        lv_label_set_text(nameLabel_titlebar, dispText[DA.typeLanguage].fac);  //文本内容
        break;
    case DIF_STAN:

        break;
    }
}

/**
  * @brief  显示界面定时器回调
  * @param  无
  * @retval 无
  */
void UI_titlebar_timer_event_cb(lv_timer_t* timer)
{
	UI_display_titlebar();
}


/**
  * @brief  共用标题栏创建
  * @param  无
  * @retval 无
  */
void UI_create_titlebar(void)
{
	lv_obj_t* label = NULL;  //显示标签

    /* 标题栏父对象 */
    parentObj_titlebar = lv_obj_create(lv_scr_act());  //创建标题栏父对象
    lv_obj_add_style(parentObj_titlebar, &style_parentObj, LV_STATE_DEFAULT);  //添加父对象为无填充样式
    lv_obj_set_size(parentObj_titlebar, lv_pct(100), lv_pct(17));  //设置父对象的大小
    lv_obj_set_style_bg_color(parentObj_titlebar, lv_palette_main(LV_PALETTE_LIME), LV_STATE_DEFAULT);  //颜色
    lv_obj_set_style_radius(parentObj_titlebar, 3, LV_STATE_DEFAULT);
    lv_obj_align(parentObj_titlebar, LV_ALIGN_TOP_LEFT, 0, 0);  //设置父对象的位置

//    lv_obj_t * img = lv_img_create(parentObj_titlebar);
//    lv_img_set_src(img, &dsc_ico_buff[4]);
//    lv_obj_align(img, LV_ALIGN_LEFT_MID, lv_pct(8), lv_pct(12));  //设置菜单图标对象的位置

    lv_obj_t * img = lv_img_create(parentObj_titlebar);
    lv_img_set_src(img, &dsc_ico_buff[11]);
    lv_obj_align(img, LV_ALIGN_LEFT_MID, lv_pct(38), lv_pct(8));  //设置菜单图标对象的位置
    /* 定时器 */
    UI_display_titlebar_timer = lv_timer_create(UI_titlebar_timer_event_cb, 100, NULL);  //100mS触发一次

    /* 返回按钮 */
    returnBtn_titlebar = lv_btn_create(parentObj_titlebar);  //创建返回标签
    lv_obj_set_style_bg_color(returnBtn_titlebar, lv_color_hex(0xc9c9c9), LV_STATE_DEFAULT);
    lv_obj_set_size(returnBtn_titlebar, 132, 58);
    lv_obj_set_style_pad_top(returnBtn_titlebar, 0, LV_STATE_DEFAULT);
    lv_obj_set_style_pad_bottom(returnBtn_titlebar, 0, LV_STATE_DEFAULT);
    lv_obj_set_style_pad_left(returnBtn_titlebar, 0, LV_STATE_DEFAULT);
    lv_obj_set_style_pad_right(returnBtn_titlebar, 0, LV_STATE_DEFAULT);
    lv_obj_align_to(returnBtn_titlebar, parentObj_titlebar, LV_ALIGN_TOP_LEFT, lv_pct(78), lv_pct(20));  //位置
    lv_obj_add_event_cb(returnBtn_titlebar, UI_titlebar_btn_event_cb, LV_EVENT_CLICKED, NULL);

    lv_obj_set_style_bg_img_src(returnBtn_titlebar, &dsc_ico_buff[10], LV_STATE_DEFAULT);
    /* 返回标签 */
    returnLabel_titlebar = lv_label_create(returnBtn_titlebar);  //创建返回标签
    lv_obj_set_style_text_color(returnLabel_titlebar, lv_color_hex(0x000000), LV_STATE_DEFAULT);
    lv_label_set_text(returnLabel_titlebar, dispText[DA.typeLanguage].Return);  //文本内容
    lv_obj_align_to(returnLabel_titlebar, returnBtn_titlebar, LV_ALIGN_CENTER, 0, 0);  //位置

    /* 页面名称标签 */
    nameLabel_titlebar = lv_label_create(parentObj_titlebar);  //创建返回标签
    lv_obj_set_style_text_font(nameLabel_titlebar, &daojin24, LV_STATE_DEFAULT);
    lv_obj_set_style_text_color(nameLabel_titlebar, lv_color_hex(0xc9c9c9), LV_STATE_DEFAULT);
    lv_obj_align_to(nameLabel_titlebar, parentObj_titlebar, LV_ALIGN_LEFT_MID, lv_pct(6), lv_pct(10));  //位置
    UI_switch_titlebar_title();  //页面名称

    /* 主温度显示标签 */
    mainLabel_titlebar = lv_label_create(parentObj_titlebar);  //创建主温度显示标签
    lv_label_set_text(mainLabel_titlebar, "");  //显示
    lv_obj_set_style_text_font(mainLabel_titlebar, &daojin24, LV_STATE_DEFAULT);
    lv_obj_set_style_text_color(mainLabel_titlebar, lv_color_hex(0xc9c9c9), LV_STATE_DEFAULT);
    lv_obj_align_to(mainLabel_titlebar, parentObj_titlebar, LV_ALIGN_LEFT_MID, lv_pct(47), lv_pct(19));  //位置

    /* 主温度单位标签 */
    unitLabel_titlebar = lv_label_create(parentObj_titlebar);  //创建主温度单位标签
    lv_label_set_text(unitLabel_titlebar, "");  //显示
    lv_obj_set_style_text_font(unitLabel_titlebar, &daojin24, LV_STATE_DEFAULT);
    lv_obj_set_style_text_color(unitLabel_titlebar, lv_color_hex(0xc9c9c9), LV_STATE_DEFAULT);
    lv_obj_align_to(unitLabel_titlebar, parentObj_titlebar, LV_ALIGN_LEFT_MID, lv_pct(61), lv_pct(19));  //位置

//    /* 消息界面切换按钮 */
//    messBtn_titlebar = lv_btn_create(parentObj_titlebar);  //创建消息界面切换按钮
//    lv_obj_add_style(messBtn_titlebar, &style_btn2, LV_STATE_DEFAULT);  //添加消息界面切换按钮样式2
//    lv_obj_align(messBtn_titlebar, LV_ALIGN_RIGHT_MID, 0, 0);  //位置
//    lv_obj_add_event_cb(messBtn_titlebar, UI_titlebar_btn_event_cb, LV_EVENT_CLICKED, NULL);  //事件
//
//    /* 消息标签 */
//    messLabel_titlebar = lv_label_create(messBtn_titlebar);  //创建消息标签
//    lv_label_set_text(messLabel_titlebar, dispText[DA.typeLanguage].mess);  //文本内容
//    lv_obj_align_to(messLabel_titlebar, messBtn_titlebar, LV_ALIGN_RIGHT_MID, 0, 0);  //位置
//
//    /* 消息数量标签 */
//    messSumLabel_titlebar = lv_label_create(messBtn_titlebar);  //创建消息按钮标签
//    lv_obj_add_style(messSumLabel_titlebar, &style_label1, LV_STATE_DEFAULT);  //添加消息按钮标签为标签样式1
//    lv_obj_set_style_text_align(messSumLabel_titlebar, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
//    lv_obj_align_to(messSumLabel_titlebar, messBtn_titlebar, LV_ALIGN_TOP_LEFT, 0, 0);  //位置
//    lv_obj_add_flag(messSumLabel_titlebar, LV_OBJ_FLAG_HIDDEN);  //隐藏消息数量标签
}

/**
  * @brief  共用标题栏显示
  * @param  无
  * @retval 无
  */
void UI_display_titlebar(void)
{
	UI_switch_titlebar_title();  //更新页面名称

	/* 主温度显示 */
	if(DA.dispPrec == 0)
	{
		lv_label_set_text_fmt(mainLabel_titlebar, "%.1f", UP.mainTempDisplay);  //更新主温度显示
	}
	else
	{
		lv_label_set_text_fmt(mainLabel_titlebar, "%.2f", UP.mainTempDisplay);  //更新主温度显示
	}
	/* 主温度单位显示 */
	if(UP.Unit_Temp == 0)
	{
		lv_label_set_text(unitLabel_titlebar, "℃");  //主温度显示单位
	}
	else
	{
		lv_label_set_text(unitLabel_titlebar, "℉");  //主温度显示单位
	}
	/* 返回按钮 */
	lv_label_set_text(returnLabel_titlebar, dispText[DA.typeLanguage].Return);  //文本内容
//	/* 报警消息 */
//	if(disp.New == DIF_DISP)
//	{
//		lv_label_set_text(messLabel_titlebar, dispText[DA.typeLanguage].mess);  //文本内容
//	}
//	/* 报警消息数量 */
//	if(UP.gAlaFlag_Num != 0)
//	{
//		lv_label_set_text_fmt(messSumLabel_titlebar, "%d", UP.gAlaFlag_Num);  //更新报警消息数量
//		lv_obj_clear_flag(messSumLabel_titlebar,LV_OBJ_FLAG_HIDDEN);  //显示报警消息数量
//	}
//	else
//	{
//		lv_obj_add_flag(messSumLabel_titlebar,LV_OBJ_FLAG_HIDDEN);  //隐藏报警消息数量
//	}
}






